Windows Presentation Foundation

Interaktivita

Jednou z možností jak přidat interaktivitu do aplikace je prostřednictvím událostí. Argumenty předávané obslužným metodám obsahují užitečné informace o vzniklé události. Je možné tak například zjistit pozici myši na elementu. V ukázkovém příkladu bude použita pozice myši pro počáteční a koncový bod úsečky. Obrázek 3 zobrazuje ukázku kreslení s aplikací InteraktivniUsecka.

Kreslení úsečky s aplikací InteraktivníUsecka
Obrázek 3 Kreslení úsečky s aplikací InteraktivníUsecka [zdroj: vlastní]
Události pro přidání interaktivity
<Canvas x:Name="canvas" 
            MouseLeftButtonDown="canvas_MouseLeftButtonDown" 
            MouseMove="canvas_MouseMove" 
            Background="White">       
</Canvas>
Obsluha události MouseLeftButtonDown
private void canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    //uložím počáteční a koncovou pozici úsečky
    start = e.GetPosition(canvas);
    konec = e.GetPosition(canvas);
            
    //vytvoření nové úsečky
    kreslenaUsecka = new Line();
    kreslenaUsecka.Stroke = new SolidColorBrush(Colors.Black);
    kreslenaUsecka.StrokeThickness = 2;

    //přidáme úsečku do Canvas
    canvas.Children.Add(kreslenaUsecka);           
}
Obsluha události MouseMove
private void canvas_MouseMove(object sender, MouseEventArgs e)
{
    //pokud je zmáčknuté levé tlačítko myši, uprav koncovou pozici úsečky
    if (e.LeftButton == MouseButtonState.Pressed)
    {
        //zjistíme aktuální pozici myši na Canvas elementu
        konec = e.GetPosition(canvas);                               

        kreslenaUsecka.X1 = start.X;
        kreslenaUsecka.Y1 = start.Y;

        kreslenaUsecka.X2 = konec.X;
        kreslenaUsecka.Y2 = konec.Y;
}
Ukázkové řešení: 2D Grafika/InteraktivniUsecka

U některých příkladů jsou použity třídy z Microsoft Blend . Přidávající interaktivitu do aplikace. Dovolují například hýbat s UIElementy. Nejednoduší způsob jak tyto třídy přidat do aplikace je přes NuGet.

Ukázka použití interaktivity z Blend
<i:Interaction.Behaviors>
     <r:MouseDragElementBehavior />
</i:Interaction.Behaviors>
Přidá interaktivní chování k libovolnému UIElementu.